<?php
/*
 *@des 后台的基类,此处是判断权限的
 *@author www.speakphp.com 
 */
class BaseAction extends IsloginAction {
  	public function __construct(){
  		parent::__construct();
  		$this->check_url_exists();
  	}
  	//检测url是不是存在的
  	public function check_url_exists(){
  		$this->check_user_onlyone_login();
  		$d = D("Admin/Nav");
  		$data = $d->get_nav();
  		if(!in_array(getModuleAction() , $data)){
  			$this->show_error_die("当前的url没有设置,或者已经禁用,请联系管理员设置！");
  		}
  		if($this->_cookie_data['super_admin'] == 0 ){
  			//不是超级管理员
  			$this->permition();
  		}
  	}
  	//检测用户 ， 必须一个人登录
  	public function check_user_onlyone_login(){
  		$session_id = cookie("admin_auth");;
  		if($session_id == '' ){
  			$this->show_error_message("session无效，请重新登录,有可能别人使用你的帐号进行登录了");
  		}
  		$d = D("Admin/Sysadmin");
  		$exists = $d->getDataBySessionIdUserid($session_id , $this->uid);
  		if(!$exists){
  			$this->show_error_message("session无效，请重新登录,有可能别人使用你的帐号进行登录了");
  		}
  	}  
  	//显示信息或者是跳转
  	public function show_error_message($message){
  		$cookie = cookie("admin_auth") ;
  		if($cookie){//注销cookie
  			cookie(null); // 清空当前设定前缀的所有cookie值
    		cookie(null,C('cookie_prefix')); //  清空指定前缀的所有cookie值
    		cookie('admin_auth',null);
  		}
  		if(!isset($_SESSION)){
  			session_start() ;
  		}
  		if(isset($_SESSION)){
  			session_destroy() ;
  		}
  		if($this->_request("showpage") != "" ){ //这个地方是为了判断 ，ajax请求，但是显示的是一个提示页面
  			throw_exception($message);
  			die();
  		}
  		if(isset($_GET['inajax']) || $this->isAjax()){
  			echo result_to_towf_new('',0,$message,null);
  			die();
  		}
  		$this->error($message,U('login/index'));
  	}	
  	//验证是否有访问的权限
  	private function permition(){
  		if(!in_array(getModuleAction(), $this->_url_data)){
  			$this->show_error_die("对不起没权限执行此操作，请联系管理员开通权限");
  		}
  	}
  	//显示错误信息，中断程序
  	function show_error_die($message = '' ){
  		if($this->_request("showpage") != "" ){ //这个地方是为了判断 ，ajax请求，但是显示的是一个错误页面
  			throw_exception($message);
  			die();
  		}
  		if(isset($_GET['inajax']) || $this->isAjax()){
  			echo result_to_towf_new('',0,$message,null);
  		}else{
  			throw_exception($message);
  		}
  		die();
  	}
  	
}
